package site.xuqing.androidbase.core;

import android.content.Intent;
import android.os.Bundle;

import androidx.annotation.LayoutRes;

/**
 * @author xuqing
 * @Description activity与fragment公共方法
 * @createTime 2021年12月10日 11:21:44
 */
public interface IBaseContext {
    /**
     * 获取布局文件
     * @return layoutIds
     */
    @LayoutRes
    int getLayout();
    
    /**
     * 初始化data
     */
    void initData();
    
    /**
     * 初始化事件
     */
    void initEvent();
    
    /**
     * 关闭activity
     */
    void closeActivity();
    
    /**
     * 关闭全部activity
     */
    void closeAllActivities();
    
    /**
     * 启动activity
     * @param activity 要启动的activity
     */
    void startActivity(Class<? extends BaseActivity> activity);
    
    /**
     * 根据intent启动activity
     * @param intent intent
     */
    void startActWithIntent(Intent intent);
    
    /**
     * 带参数启动activity
     * @param activity 要启动的activity
     * @param bundle 需要携带的参数
     */
    void startActivity(Class<? extends BaseActivity> activity, Bundle bundle);
    
    /**
     * 需要有返回数据的启动activity
     * @param activity 要启动的activity
     * @param requestCode 启动activity的请求码
     */
    void startActivityForResult(Class<? extends BaseActivity> activity,int requestCode);
    
    /**
     * 需要有返回数据且携带参数的启动activity
     * @param activity 要启动的activity
     * @param bundle 需要携带的数据
     * @param requestCode 启动activity的请求码
     */
    void startActivityForResult(Class<? extends BaseActivity> activity,Bundle bundle,int requestCode);
    
    /**
     * 需要有返回数据intent启动activity
     * @param intent intent
     * @param requestCode 启动activity的请求码
     */
    void startActWithIntentForResult(Intent intent,int requestCode);
}
